gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\LS_SVMlab\simFILE.m
function Yt = simFILE(model, filename,Xt,Yt) % Only for intern LS-SVMlab use; % % simulate the LS-SVM model using the FILE interface to the C-file; % By default, the file 'buffer.mc' is used to pass the arguments. % % Yt = simFILE(model, filename,Xt) % % see simlssvm for use; % % Copyright (c) 2002, KULeuven-ESAT-SCD, License & help @ http://www.esat.kuleuven.ac.be/sista/lssvmlab % % change to dir ~/matlab % %or_dir = pwd; %cd ~/matlab/; eval('Yt;','Yt=[];'); % save the parameters to file fid=fopen(filename,'wb'); fwrite(fid,model.type(1),'char'); fwrite(fid,model.nb_data,'int'); fwrite(fid,model.x_dim ,'int'); fwrite(fid,model.y_dim,'int'); fwrite(fid,length(model.kernel_pars) ,'int'); for t=1:length(model.kernel_pars), fwrite(fid,model.kernel_pars(t) ,'double'); end lk = length(model.kernel_type); fwrite(fid,lk,'int'); fprintf(fid,'%s',model.kernel_type); eval('dyn_pars = [model.steps; model.x_delays];','dyn_pars=[];'); eval('dyn_pars = [dyn_pars;model.y_delays];',' '); fwrite(fid,length(dyn_pars) ,'int'); for t=1:length(dyn_pars), fwrite(fid,dyn_pars(t) ,'int'); end % xtrain: rowwise for j=1:model.nb_data, for i=1:model.x_dim, fwrite(fid,model.xtrain(model.selector(j),i), 'double'); end end % ytrain: columnwise for i=1:model.y_dim for j=1:model.nb_data fwrite(fid,model.ytrain(model.selector(j),i), 'double'); end end % write alpha's: columnwise for i=1:model.y_dim for j=1:model.nb_data fwrite(fid,model.alpha(j,i), 'double'); end end % write b for i=1:model.y_dim, fwrite(fid,model.b(i), 'double'); end % Xtest: rowwise nxt = size(Xt,1); fwrite(fid,nxt, 'int'); for j=1:nxt, for i=1:model.x_dim, fwrite(fid,Xt(j,i), 'double'); end end % Ytest: columnwise nyt = size(Yt,1); fwrite(fid,nyt, 'int'); for i=1:model.y_dim, for j=1:nyt, fwrite(fid,Yt(j,i), 'double'); end end fclose(fid); % Compute alpha & b eval(['!simFILE.exe ' filename],'error(''error in C-executable, probably file ''lssvmFILE.x'' not found in current directory...'')'); %status = unix(['lssvmFILE.x ' filename]);if status == 127, warning('Executable ''simFILE.x'' not found in current directory'); end % read results fid=fopen(filename,'r'); nxt = fread(fid,1,'int'); Yt = fread(fid,model.y_dim*nxt,'double'); Yt = reshape(Yt,length(Yt)/model.y_dim, model.y_dim); fclose(fid); % % change original directory % %cd(or_dir);